package com.runjian.rundo.iot.agent.iec104.parser.frame;

import java.util.ArrayList;
import java.util.List;

import com.runjian.rundo.iot.agent.iec104.consts.Action;
import com.runjian.rundo.iot.agent.iec104.consts.Cot;
import com.runjian.rundo.iot.agent.iec104.consts.Ti;

import cn.hutool.core.util.StrUtil;
import io.netty.buffer.ByteBuf;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;

/**
 * @author CaoQingHua
 */
public interface IASDUFrame extends Frame {
    Ti getTi();

    void setTi(Ti ti);

    Boolean getSq();

    void setSq(Boolean sq);

    Short getNumber();

    void setNumber(Short number);

    Boolean getT();

    void setT(Boolean t);

    Boolean getPN();

    void setPN(Boolean pN);

    Cot getCot();

    void setCot(Cot cot);

    Short getAddress();

    void setAddress(Short address);

    Short getQos();

    void setQos(Short qos);

    List<InfoElement> getInfoElements();

    void setInfoElements(List<InfoElement> infoElements);

    void addInfoElement(InfoElement infoElement) ;

    void analysisInfo(byte[] msg);

    IASDUFrame replyFrame();

    List<Action> action();

    void init() ;

    void writeInfoContent(ByteBuf assembleByteBuf, InfoElement<Object> infoElement);
}
